using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Web.Services;
using AEL.VAL;
using BEL;
using CEL.VAL;
using HER;

namespace EWS
{
    /// <summary>
    /// Summary description for WS_VAL
    /// </summary>
    [WebService(Namespace = "http://koala.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    public class WS_VAL : WebService
    {
        #region Servicios para Val_Inversion

        // Objeto permanente para acceso a DO_Val_Inversion
        private DO_Val_Inversion _Val_Inversion;

        /// <summary>
        /// La propiedad para acceso a DO_Val_Inversion
        /// </summary>
        public DO_Val_Inversion Val_Inversion
        {
            get
            {
                if (_Val_Inversion == null)
                    _Val_Inversion = new DO_Val_Inversion();
                return _Val_Inversion;
            }
        }

        #region Obtención  de Datos

        [WebMethod]
        public List<Val_Inversion> Val_Inversion_Get(Scope s)
        {
            return Val_Inversion.Get(s);
        }

        /// <summary>
        /// Retorna todos los datos de Val_Inversion
        /// </summary>
        /// <returns>Todos los registros de Val_Inversion </returns>
        [WebMethod]
        public List<Val_Inversion> Val_Inversion_GetByCodigo(Scope s, string Codigo)
        {
            return Val_Inversion.GetByCodigo(s, Codigo);
        }

        [WebMethod]
        public List<Val_Inversion> Val_Inversion_GetByEmpresa(Scope s)
        {
            return Val_Inversion.GetByEmpresa(s);
        }

        [WebMethod]
        public List<Val_Inversion> Val_Inversion_GetById(Scope s, string Id)
        {
            return Val_Inversion.GetById(s, Id);
        }
        [WebMethod]
        public List<Val_Inversion> Val_Inversion_GetByLikeNombre(Scope s, string Nombre)
        {
            return Val_Inversion.GetByLikeNombre(s, Nombre);
        }

        #endregion

        #region  Operaciones con datos de la tabla Val_Inversion

        /// <summary>
        /// Borra el objeto de Val_Inversion
        /// </summary>
        /// <param name="o">El objeto a borrar</param>
        /// <returns></returns>
        [WebMethod]
        public int Val_Inversion_Delete(Scope s, Val_Inversion o)
        {
            try
            {
                return Val_Inversion.Delete(s, o);
            }
            catch (Exception e)
            {
                throw Error.ConstruirExcepcion(e, Context.Request.Url.AbsoluteUri);
            }
        }

        /// <summary>
        /// Inserta el objeto en Val_Inversion
        /// </summary>
        /// <param name="s"></param>
        /// <param name="o">El objeto a insertar</param>
        /// <returns></returns>
        [WebMethod]
        public string Val_Inversion_Insert(Scope s, Val_Inversion o)
        {
            try
            {
                return Val_Inversion.Insert(s, o);
            }
            catch (Exception e)
            {
                throw Error.ConstruirExcepcion(e, Context.Request.Url.AbsoluteUri);
            }
        }

        /// <summary>
        /// Actualiza el módulo en Val_Inversion
        /// </summary>
        /// <param name="o">El objeto a actualizar</param>
        /// <returns></returns>
        /// <param name="original"></param>
        [WebMethod]
        public int Val_Inversion_Update(Scope s, Val_Inversion o, Val_Inversion original)
        {
            try
            {
                return Val_Inversion.Update(s, o, original);
            }
            catch (Exception e)
            {
                throw Error.ConstruirExcepcion(e, Context.Request.Url.AbsoluteUri);
            }
        }

        #endregion

        #endregion

        #region Servicios para Val_Metodo

        // Objeto permanente para acceso a DO_Val_Metodo
        private DO_Val_Metodo _Val_Metodo;

        /// <summary>
        /// La propiedad para acceso a DO_Val_Metodo
        /// </summary>
        public DO_Val_Metodo Val_Metodo
        {
            get
            {
                if (_Val_Metodo == null)
                    _Val_Metodo = new DO_Val_Metodo();
                return _Val_Metodo;
            }
        }

        #region Obtención  de Datos

        [WebMethod]
        public List<Val_Metodo> Val_Metodo_Get(Scope s)
        {
            return Val_Metodo.Get(s);
        }

        /// <summary>
        /// Retorna todos los datos de Val_Metodo
        /// </summary>
        /// <returns>Todos los registros de Val_Metodo </returns>
        [WebMethod]
        public List<Val_Metodo> Val_Metodo_GetByCodigo(Scope s, string Codigo)
        {
            return Val_Metodo.GetByCodigo(s, Codigo);
        }

        [WebMethod]
        public List<Val_Metodo> Val_Metodo_GetByEmpresa(Scope s)
        {
            return Val_Metodo.GetByEmpresa(s);
        }

        [WebMethod]
        public List<Val_Metodo> Val_Metodo_GetById(Scope s, string Id)
        {
            return Val_Metodo.GetById(s, Id);
        }

        [WebMethod]
        public List<Val_Metodo> Val_Metodo_GetByLikeNombre(Scope s, string Nombre)
        {
            return Val_Metodo.GetByLikeNombre(s, Nombre);
        }

        #endregion

        #region  Operaciones con datos de la tabla Val_Metodo

        /// <summary>
        /// Borra el objeto de Val_Metodo
        /// </summary>
        /// <param name="o">El objeto a borrar</param>
        /// <returns></returns>
        [WebMethod]
        public int Val_Metodo_Delete(Scope s, Val_Metodo o)
        {
            try
            {
                return Val_Metodo.Delete(s, o);
            }
            catch (Exception e)
            {
                throw Error.ConstruirExcepcion(e, Context.Request.Url.AbsoluteUri);
            }
        }

        /// <summary>
        /// Inserta el objeto en Val_Metodo
        /// </summary>
        /// <param name="s"></param>
        /// <param name="o">El objeto a insertar</param>
        /// <returns></returns>
        [WebMethod]
        public string Val_Metodo_Insert(Scope s, Val_Metodo o)
        {
            try
            {
                return Val_Metodo.Insert(s, o);
            }
            catch (Exception e)
            {
                throw Error.ConstruirExcepcion(e, Context.Request.Url.AbsoluteUri);
            }
        }

        /// <summary>
        /// Actualiza el módulo en Val_Metodo
        /// </summary>
        /// <param name="o">El objeto a actualizar</param>
        /// <returns></returns>
        /// <param name="original"></param>
        [WebMethod]
        public int Val_Metodo_Update(Scope s, Val_Metodo o, Val_Metodo original)
        {
            try
            {
                return Val_Metodo.Update(s, o, original);
            }
            catch (Exception e)
            {
                throw Error.ConstruirExcepcion(e, Context.Request.Url.AbsoluteUri);
            }
        }

        #endregion

        #endregion

        // Posible problema con static y nuevas consultas a la base
        // se debería optimizar la llamada a los objeto DO, 
        // para que esté creado desde el momento de la llamada
        // o
        // que problema existe en concurrencia??
    }
}